const crypto=require('crypto')

/**
 * 加密字符串
 * @param {String} raw_password 原始待定加密字符串
 */
function passwordEncoder(raw_password){
    return crypto.createHmac('SHA256', 'test secret')
                 .update(raw_password)
                 .digest('hex')
}

/**
 * 获取指定长队随机字符
 * @param {Number} len 获取指定长度字符串 
 * @param {String} all  指定待选择的字符序列
 */
function randomString(len,all){
    len=len||16
    all=all||'abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    let arr=[]
    while(len--){
        arr.push(all[Math.floor(Math.random()*all.length)])
    }
    return arr.join('')
}

/**
 * 打乱数组
 */
function randomArr(arr){
    if(!arr||arr.length===0){
        return null;
    }

    return arr.sort(()=>{
        //0到1之间随机小数
        return Math.random()>0.5? 1 : -1;
    })
}

/**
 * 实现日期格式化的原生js功能
*/
function datetime(){
    const dt=new Date(), //获取现在时间
          year=dt.getFullYear(), //年
        month=dt.getMonth()+1, //月
        day=dt.getDate(),//获取日
        hour=dt.getHours(),//小时
        minute=dt.getMinutes(), //分钟
        second=dt.getSeconds(); //秒
    //拼接
    return year+'年'+
         (month>=10?month:"0"+month)+'月'+
         (day>=10?day:"0"+day)+'日'+
         (hour>=10?hour:"0"+hour)+'时'+
         (minute>=10?minute:"0"+minute)+'分'+
         (second>=10?minute:"0"+second)+'秒';
}

module.exports={
    passwordEncoder,
    randomString,
    randomArr,
    datetime
}